package cn.laoma.thread5.t5_003_Concurrent_Container;

import com.sun.jmx.remote.internal.ArrayQueue;

import java.util.ArrayDeque;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.ConcurrentLinkedQueue;

/**
 * @program: ThreadDemos
 * @description: Queue本质是一个FIFO（先进先出）的队列，添加元素只能在队尾，移除只能在队首
 * @author: 老马
 * @create: 2021-09-28 16:47
 **/
public class T03_Queue {
    public static void main(String[] args) {
        //说明下队列的常用方法
        Queue<String> queue = new ConcurrentLinkedQueue<>();

        /****************************************************************************
         * 本组方法。成功返回true，在操作失败时抛出异常
         ***************************************************************************/
        queue.add("aaa");              //添加一个元素到队尾
        queue.remove();                //获取队首的元素，并从队列中移除
        queue.element();               //获取队首的元素，但不从队列中移除

        /****************************************************************************
         * 本组方法。成功返回true，在操作失败时返回false或者null
         ***************************************************************************/
        queue.offer("ccc");         //添加一个元素到队尾
        queue.poll();                  //获取队首的元素，并从队列中移除
        queue.peek();                  //获取队首的元素，但不从队列中移除

    }
}
